package k1_exercise;

import java.util.Arrays;
import java.util.Scanner;

public class Array_exercise_eighth_insert {

    /**
     * 完整版的向数组中添加元素
     */
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        //初始化实际元素的个数
        int size = 0;

        //创建一个长度为10的数组
        int[] nums = new int[10];

        //输入初始的五个数字
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第"+(i+1)+"个数字：");
            nums[i] = scanner.nextInt();
            size++;
        }

        System.out.println(Arrays.toString(nums));

        /**
         * 需要考虑的条件
         *     1.输入的索引位置，必须在0-实际元素个数(size)之间(包含第size的位置，属于追加形式)
         *     2.添加元素的时候要考虑数组中是否还有空余位置
         */

        while(true){
            //实现向指定位置添加元素的功能
            System.out.println("请输入要添加的数字的索引位置：");
            int insertIndex = scanner.nextInt();
            System.out.println("请输入要添加的数字：");
            int insertNumber = scanner.nextInt();

            //要添加的元素的索引位置必须在0-实际元素个数(size)之间
            if(insertIndex>=0 && insertIndex<=size){
                //实际的元素数量不足数组的容量，允许添加
                if (size<nums.length){
                    //从数组的最后一位开始，逐位向后进行替换元素，直到要插入的索引位置为止
                    for (int i = size; i > insertIndex ; i--) {
                        //第i个位置的值应该由第i-1的位置的值进行覆盖
                        nums[i] = nums[i-1];
                    }
                    //经过循环后，要添加的位置已经被空出来，所以直接对此位置进行赋值即可
                    nums[insertIndex] = insertNumber;

                    //实际元素数量+1
                    size++;
                    System.out.println(Arrays.toString(nums));
                }else{
                    System.out.println("容量为"+nums.length+",已有"+size+"个元素,无法添加");
                    break;
                }
            }else{
                System.out.println("现有"+size+"个元素，无法向"+insertIndex+"位置添加，请重新输入");
            }
        }
    }


}
